package com.danan.realtime.function;

import com.danan.realtime.util.WordUtil;
import org.apache.flink.table.annotation.DataTypeHint;
import org.apache.flink.table.annotation.FunctionHint;
import org.apache.flink.table.functions.TableFunction;
import org.apache.flink.types.Row;

import java.util.Set;

/**
 * @author NanHuang
 * @Date 2023/1/26
 */
// 声明一行的字段名和类型
@FunctionHint(output = @DataTypeHint("Row<keyword String>"))
public class SplitWord extends TableFunction<Row> {
    // 约定：方法名为eval，public权限，无返回值
    public void eval(@DataTypeHint("String") String keywords){
        // 分词
        Set<String> result =  WordUtil.splitWord(keywords);
        // 收集分词结果
        for (String keyword : result) {
            collect(Row.of(keyword));
        }
    }
}
